package cn.wolfcode.shop.cloud.util;

import javax.script.ScriptEngine;

import javax.script.ScriptEngineManager;

import java.awt.*;

import java.awt.image.BufferedImage;

import java.util.Random;

/**

 * Created by wolfcode-lanxw

 */

public class VerifyCodeImgUtil {

    public static BufferedImage createVerifyCodeImg(String verifyCode) {

        int width = 80;

        int height = 32;

        //create the image

        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

        Graphics g = image.getGraphics();

        // set the background color

        g.setColor(new Color(0xDCDCDC));

        g.fillRect(0, 0, width, height);

        // draw the border

        g.setColor(Color.black);

        g.drawRect(0, 0, width - 1, height - 1);

        // create a random instance to generate the codes

        Random rdm = new Random();

        // make some confusion

        for (int i = 0; i < 50; i++) {

            int x = rdm.nextInt(width);

            int y = rdm.nextInt(height);

            g.drawOval(x, y, 0, 0);

        }

        // generate a random code

        g.setColor(new Color(0, 100, 0));

        g.setFont(new Font("Candara", Font.BOLD, 24));

        g.drawString(verifyCode, 8, 24);

        g.dispose();

        //输出图片

        return image;

    }

    public static Integer calc(String exp) {

        try{

            ScriptEngineManager manager = new ScriptEngineManager();

            ScriptEngine engine = manager.getEngineByName("JavaScript");

            return (Integer) engine.eval(exp);

        }catch(Exception e){

            e.printStackTrace();

            return 0;

        }

    }

    private static char[] ops = new char[]{'+','-','*'};

    public static String generateVerifyCode() {

        Random rdm = new Random();

        int num1 = rdm.nextInt(10);

        int num2 = rdm.nextInt(10);

        int num3 = rdm.nextInt(10);

        char op1 = ops[rdm.nextInt(3)];

        char op2 = ops[rdm.nextInt(3)];

        String exp = ""+num1+op1+num2+op2+num3;

        return exp;

    }

}